# -*- coding: utf-8 -*-
import hall_callback
import td_const, td_error, td_cmd


#游戏逻辑类，单局游戏的全局数据保存在这里
class CMapMsg(object):
	#构造函数
	def __init__(self, objRoom):
		super(CMapMsg, self).__init__()
		self.objRoom = objRoom				#房间对象的引用，消息发送和写日志用到
		self.objMsgMgr = hall_callback.get_game_room_msgmgr()		#传输对象的引用，消息打包的时候用到
		self.register_recv()		#注册游戏子事件的响应函数
		self.reset()						#初始化游戏内全局数据
		
	#自我清理的函数，释放此对象前调用
	def clean(self):
		self.reset_map()
		self.reset()
		self.objRoom = None
		self.objMsgMgr = None
		
	#此函数注册游戏子事件的具体响应函数
	def register_recv(self):
		self.dicEventFunc = {}
		pass
		
	#此函数对游戏内全局数据进行初始化或重置
	def reset(self):
		self.iStatus = td_const.GAME_WAIT		#游戏状态，初始化为准备（非进行游戏）
		self.iStage = None		#当前关卡，初始化为None
		self.iCurFrame = 0		#当前帧数，初始化为0
		self.objTimeLine = None		#管理怪物和阳光刷新数据的对象，初始化为None
		self.dicTrackSet = {}			#当前关卡的地形数据的字典，key是轨道编号，value是一个代表地形的int，可能为草地、水域或屋顶
		self.dicPlayers = {}	#管理当前存在的全部奖励物品（阳光，银币等）的字典，key是物品的唯一id，value是物品对象
		self.iWinScore = 0				#本局的胜利得分
		self.iLoseScore = 0				#本局的失败得分
	
	#此函数释放和清理游戏内的全局数据，一般在游戏结束的时候调用
	def reset_map(self):
		pass
	